﻿//using System;
//using System.Collections.Generic;
//using System.Collections.ObjectModel;
//using System.Linq;
//using System.Web;
//using System.Web.UI;
//using System.Text;
//using System.IO;
//using System.Xml.Linq;
//using System.Net;

//namespace Gollie.Ajax
//{
//	public class DialogHtml : AjaxResult
//	{
//		public string html;

//		public DialogHtml()  : base(null) { }

//		public DialogHtml(DialogHtmlArg arg)
//			: base(arg)
//		{

//		}

//		protected override void Init(AjaxArg ajaxArg)
//		{
//			DialogHtmlArg arg = (DialogHtmlArg)ajaxArg;

//			try
//			{
//				string type = arg.token;

//				UserInfo ui = this.IsLoggedInNeeded(type);

//				this.SetHtml(type, ui);
//			}
//			catch (Exception e)
//			{
//				if (this.ErrorCode == 0)
//					this.ErrorCode = 99;

//				this.ErrorMessage = e.Message;
//			}
//		}

//		private UserInfo IsLoggedInNeeded(string type)
//		{
//			object o = HttpContext.Current.Session["userinfo"];

//			if (o == null)
//			{
//				logger.Warn("Trying to get dynamic html for type '{0}' without being logged in", type);
//				throw new Exception("Illegal method call 'dialogHtml'");
//			}

//			return o as UserInfo;
//		}

//		private void SetHtml(string type, UserInfo ui)
//		{
//			XDocument xdoc = new XDocument();

//			switch (type)
//			{
//				case "registervendoruser":
//					this.RegisterVendorUser(xdoc, ui);
//					break;
//			}

//			this.html = xdoc.ToString(SaveOptions.DisableFormatting);
//		}

//		private void RegisterVendorUser(XDocument xdoc, UserInfo ui)
//		{
//			XElement table = this.GetFormTable(xdoc, ui).AddAttributes(new XAttrs() { {"style", "border: 1px solid black; margin: 0; padding: 0;"}, {"cellpadding", "0"}, {"cellspacing", "0"} });
//			XElement row = table.NewTableRow().AddAttribute("style", "border-bottom: 1px solid black;");
//			XElement cell = row.NewTableCell().AddAttribute("style", "vertical-align: top; padding-right: 16px; border-bottom: 1px solid black;");
//			cell.AddTagWithAttributes("input", new XAttrs() { { "type", "radio" }, { "name", "rbusertype" }, { "id", "rbcashier" }, { "value", "3" }, {"checked", "checked"} });
//			cell.AddTag("b").AddTagWithAttributes("label", "Kassier", "for", "rbcashier");
//			cell = row.NewTableCell().AddAttributes(new XAttrs() { { "class", "wrap" }, { "style", "vertical-align: top; border-bottom: 1px solid black; padding-bottom: 8px; padding-top: 0px;" } });
//			cell.Add("Een kassier kan de volgende handelingen verrichten:");
//			cell.AddTag("ul").AddTag("li", "Betalingen afhandelen");

//			row = table.NewTableRow().AddAttribute("style", "border-bottom: 1px solid black;");
//			cell = row.NewTableCell().AddAttribute("style", "vertical-align: top; padding-right: 16px; border-bottom: 1px solid black;");
//			cell.AddTagWithAttributes("input", new XAttrs() { { "type", "radio" }, { "name", "rbusertype" }, { "id", "rbsales" }, { "value", "2" } });
//			cell.AddTag("b").AddTagWithAttributes("label", "Verkoper", "for", "rbsales");
//			cell = row.NewTableCell().AddAttributes(new XAttrs() { { "class", "wrap" }, { "style", "vertical-align: top; border-bottom: 1px solid black; padding-bottom: 8px; padding-top: 0px;" } });
//			cell.Add("Een verkoper kan de volgende handelingen verrichten:");
//			var ul = cell.AddTag("ul"); ul.AddTag("li", "Deals maken"); ul.AddTag("li", "Deals die hij zelf heeft gemaakt wijzigen en verwijderen");

//			row = table.NewTableRow().AddAttribute("style", "border-bottom: 1px solid black;");
//			cell = row.NewTableCell().AddAttribute("style", "vertical-align: top; padding-right: 16px;");
//			cell.AddTagWithAttributes("input", new XAttrs() { { "type", "radio" }, { "name", "rbusertype" }, { "id", "rbadmin" }, { "value", "1" } });
//			cell.AddTag("b").AddTagWithAttributes("label", "Administrator", "for", "rbadmin");
//			cell = row.NewTableCell().AddAttributes(new XAttrs() { { "class", "wrap" }, { "style", "vertical-align: top; padding-bottom: 8px; padding-top: 0px;" } });
//			cell.Add("Een administrator kan de volgende handelingen verrichten:");
//			ul = cell.AddTag("ul"); ul.AddTag("li", "Betalingen afhandelen"); ul.AddTag("li", "Deals maken"); ul.AddTag("li", "Alle deals wijzigen en verwijderen"); ul.AddTag("li", "Dashboard inzien"); ul.AddTag("li", "Facturen inzien"); ul.AddTag("li", "Klantbeoordelingen inzien"); ul.AddTag("li", "Gebruikersadministratie voeren");
//		}

//		private XElement GetFormTable(XDocument root, UserInfo ui)
//		{
//			XElement div = new XElement("div", new XAttribute("style", "font-size: 0.9em;"));

//			if (ui != null)
//			{
//				XElement id = new XElement("input").AddAttributes(new XAttrs() { { "name", "tbhuid" }, { "id", "tbhuid" }, { "type", "hidden" }, { "value", ui.Id.ToString() } });
//				XElement wt = new XElement("input").AddAttributes(new XAttrs() { { "name", "tbhwt" }, { "id", "tbhwt" }, { "type", "hidden" }, { "value", ui.WebToken } });
//				div.Add(id, wt);
//			}

//			root.Add(div);

//			return div.NewTable();
//		}
//	}

//	public class XAttrs : Dictionary<string, string> {}

//	public static class XElementExtensions
//	{
//		public static XElement NewTable(this XElement e)
//		{
//			return e.AddTag("table");
//		}

//		public static XElement NewTableRow(this XElement tableElt)
//		{
//			return tableElt.AddTag("tr");
//		}

//		public static XElement NewTableCell(this XElement rowElt)
//		{
//			return rowElt.AddTag("td");
//		}

//		public static XElement NewTableCell(this XElement rowElt, int colSpan)
//		{
//			return rowElt.NewTableCell().AddAttributes(new XAttrs() { {"colspan", colSpan.ToString() }, { "class", "wrap" } });
//		}

//		public static void NewFormRowContentLabel(this XElement rowElt, string label, string value, XAttrs attrs)
//		{
//			rowElt.NewTableCell().AddTag("span", label);
//			rowElt.NewTableCell().AddTagWithAttributes("span", value, attrs);
//		}

//		public static XElement NewFormRowContent(this XElement rowElt, string label, string inputId, string type, string value, XAttrs attrs)
//		{
//			return rowElt.NewFormRowContent(label, inputId, type, attrs).AddAttribute("value", value);
//		}

//		public static XElement NewFormRowContent(this XElement rowElt, string label, string inputId, string type, XAttrs attrs)
//		{
//			rowElt.NewTableCell().AddTagWithAttributes("label", label, "for", inputId);
//			return rowElt.NewTableCell().AddTagWithAttributes("input", new XAttrs() { { "name", inputId }, { "id", inputId }, { "type", type } }).AddAttributes(attrs);
//		}

//		public static XElement AddTag(this XElement elt, string tag, string text = null)
//		{
//			XElement child = new XElement(tag);
//			if (string.IsNullOrEmpty(text) == false)
//				child.Add(text);

//			elt.Add(child);

//			return child;
//		}

//		public static XElement AddTagWithAttributes(this XElement elt, string tag, string text, XAttrs attrs)
//		{
//			return elt.AddTag(tag, text).AddAttributes(attrs);
//		}

//		public static XElement AddTagWithAttributes(this XElement elt, string tag, XAttrs attrs)
//		{
//			return elt.AddTagWithAttributes(tag, null, attrs);
//		}

//		public static XElement AddTagWithAttributes(this XElement elt, string tag, string attrName, string attrValue)
//		{
//			return elt.AddTag(tag).AddAttribute(attrName, attrValue);
//		}

//		public static XElement AddTagWithAttributes(this XElement elt, string tag, string text, string attrName, string attrValue)
//		{
//			return elt.AddTag(tag, text).AddAttribute(attrName, attrValue);
//		}

//		public static XElement AddAttributes(this XElement elt, XAttrs attrs)
//		{
//			if (attrs == null || attrs.Count == 0)
//				return elt;

//			foreach (string name in attrs.Keys)
//				elt.AddAttribute(name, attrs[name]);
//			return elt;
//		}

//		public static XElement AddAttribute(this XElement elt, string name, string value)
//		{
//			elt.Add(new XAttribute(name, value));
//			return elt;
//		}
//	}
//}